package demo1;

import jdk.nashorn.internal.runtime.regexp.joni.Config;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Demo {
    public static void main(String[] args) throws Exception {
        /*//正常编码
        User user = new User();
        user.sayHello();
        //为了应对调用方的变化尽可能不更改调用方法，使用了反射机制
        //灵活，但需要编写大量反射代码，成功写成后其实是Spring的底层实现
        Class cls = Class.forName("demo1.User");
        User user1 = (User) cls.newInstance();
        user1.sayHello();*/

        /*
          使用Spring提供的注解，通过注解来完成反射操作, 简化反射操作
          Spring容器可以进行复杂的对象初始化，后期还可以利用AOP额外添加业务，有轻微侵入性
        */
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("demo1");
        User user = context.getBean(User.class);//向Spring容器中注册了User对象，通过getBean方法获取
        user.sayHello();
    }
}
